Diakritika v interbasi
Otázka od: Petr Matejcek
26. 10. 2003 16:07
zdravim
mam tabulku v interbasi kde v jednom sloupci je prijmeni osoby
pokud ale potrebuju seradit osoby dle abecedy order by prijmeni tak to
seradi tak ze nejprve posklada prijmeni zacinajici A-Z (bez diakritiky)
a teprve na konci uvede vsechna prijmeni zacinajici na pismena s hackem
S,C,R,Z,
mate nekdo tip jak to nastavit aby to seradilo dobre?
diky Petr
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Jaroslav Uher
26. 10. 2003 17:02
On 26 Oct 2003 at 15:44, Petr Matejcek wrote:
> mam tabulku v interbasi kde v jednom sloupci je prijmeni osoby
> pokud ale potrebuju seradit osoby dle abecedy order by prijmeni tak to
> seradi tak ze nejprve posklada prijmeni zacinajici A-Z (bez diakritiky)
> a teprve na konci uvede vsechna prijmeni zacinajici na pismena s hackem
> S,C,R,Z,
>
> mate nekdo tip jak to nastavit aby to seradilo dobre?
predpokladam, ze pole mas mas definovane tak nejak:
PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
JMENO VARCHAR(25) CHARACTER SET WIN1250,
TITUL VARCHAR(9) CHARACTER SET WIN1250,
a potom v selelctu staci
OrderByPrijm = 'ORDER BY PRIJMENI COLLATE PXW_CSY, '+
'JMENO COLLATE PXW_CSY, '+
'TITUL COLLATE PXW_CSY';
Jarek U.
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Petr Matejcek
26. 10. 2003 17:13
aha tak to nemam definoval jsem jen
PRIJMENI CHAR(25)
muzete mi pls nejak poradit jestli jde zmenit struktura tabulky na
PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
aniz bych prisel o data ktere v ni mam ?
diky
predpokladam, ze pole mas mas definovane tak nejak:
>PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
>JMENO VARCHAR(25) CHARACTER SET WIN1250,
>TITUL VARCHAR(9) CHARACTER SET WIN1250,
>
>a potom v selelctu staci
> OrderByPrijm = 'ORDER BY PRIJMENI COLLATE PXW_CSY, '+
> 'JMENO COLLATE PXW_CSY, '+
> 'TITUL COLLATE PXW_CSY';
>
>
>Jarek U.
>
>
>
>
>
>
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Jaroslav Uher
26. 10. 2003 18:23
On 26 Oct 2003 at 17:04, Petr Matejcek wrote:
> aha tak to nemam definoval jsem jen
>
> PRIJMENI CHAR(25)
>
> muzete mi pls nejak poradit jestli jde zmenit struktura tabulky na
> PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
> aniz bych prisel o data ktere v ni mam ?
podle knihy Interbase/Firebird od Pavla Cisare (vrele Ti doporucuji
jeji koupi), by to melo jit, viz "Zmena sloupcu tabulky" str. 196-197
ALTER TABLE TVOJE_TABULKA ALTER PRIJMENI TYPE
VARCHAR(25) CHARACTER SET WIN1250;
Ale nezkousel jsem to.
A rozhodne bych predtim databazi zalohoval !
Koukni se jeste v IBExpertu jaky mas vlastne charset toho sloupce.
Jarek U.
> predpokladam, ze pole mas mas definovane tak nejak:
>
> >PRIJMENI VARCHAR(25) CHARACTER SET WIN1250,
> >JMENO VARCHAR(25) CHARACTER SET WIN1250,
> >TITUL VARCHAR(9) CHARACTER SET WIN1250,
> >
> >a potom v selelctu staci
> > OrderByPrijm = 'ORDER BY PRIJMENI COLLATE
PXW_CSY, '+
> > 'JMENO COLLATE PXW_CSY, '+
> > 'TITUL COLLATE PXW_CSY';
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Petr Matejcek
26. 10. 2003 19:04
tu knihu si rad koupim kde se da objednat?
jeste jsem narazil na problem : kdyz mam sloupec PRIJMENI VARCHAR(25)
CHARACTER SET WIN1250
a chci provest INSERT INTO TABULKA (JMENO, PRIJMENI, ...) VALUES
('jmeno','prijmeni', ...)
tak to haze chybu : aritmetic exception , numeric overflow or string
truncation, Cannot transliterate character between character sets.
poradite pls kde delam chybu ?
>podle knihy Interbase/Firebird od Pavla Cisare (vrele Ti doporucuji
>jeji koupi), by to melo jit, viz "Zmena sloupcu tabulky" str. 196-197
>
>ALTER TABLE TVOJE_TABULKA ALTER PRIJMENI TYPE
>VARCHAR(25) CHARACTER SET WIN1250;
>
>
>
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Petr Vones
26. 10. 2003 19:08
From: "Petr Matejcek" <konference@crhov.komfi.cz>
> tu knihu si rad koupim kde se da objednat?
Maji ji v kazdem dobrem knihkupectvi. Pres Internet pak urcite na vltava.cz
Petr Vones
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Jaroslav Uher
26. 10. 2003 20:48
On 26 Oct 2003 at 18:56, Petr Matejcek wrote:
> jeste jsem narazil na problem : kdyz mam sloupec PRIJMENI
VARCHAR(25)
> CHARACTER SET WIN1250
> a chci provest INSERT INTO TABULKA (JMENO, PRIJMENI,
...) VALUES
> ('jmeno','prijmeni', ...)
1. jak mas definovan sloupec JMENO ?
2. pokud bez CHARACTER SET WIN1250 a chces tam 'cpat'
ceske nazvy jmen s diakritikou, tak je to jasne
3. pouzivas to v Delphi kodu nebo scriptu SP ? Je v tom velky
rozdil, v Delphi musis uvozovky zdvojovat nebo pouzit hotovou
funkci QuotedStr.
> tak to haze chybu : aritmetic exception , numeric overflow or
string
> truncation, Cannot transliterate character between character
sets.
>
> poradite pls kde delam chybu ?
Ja na vetsinu Insert/Update/Delete operaci nad tabulkou pouzivam
STORE PROCEDURES a komponenty TIBStoredProc s
parametry. S tim jsou nejmensi problemy.
Jarek U.
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Petr Matejcek
26. 10. 2003 20:50
sloupec jmeno je definovan s CHARACTER SET WIN1250 a insert zapisuju
primo z kodu delphi
s:='insert into ltable (jmeno) values ('''+EditJmeno.Text+''' )';
na zdvojovani uvozovek jsem nezapomnel
chybu to hazi pouze pokud v promenne EditJmeno.Text je diakritika pokud
tam neni tak to normalne do databaze ulozi
co je zajimave tak kdyz byl sloupec jmeno definovan jen jako char(12)
tak to vlozilo jmeno s diakritikou bez problemu ale neumelo to podle nej
seradit
umi nekdo poradit? diky Petr
>1. jak mas definovan sloupec JMENO ?
>2. pokud bez CHARACTER SET WIN1250 a chces tam 'cpat'
>ceske nazvy jmen s diakritikou, tak je to jasne
>3. pouzivas to v Delphi kodu nebo scriptu SP ? Je v tom velky
>rozdil, v Delphi musis uvozovky zdvojovat nebo pouzit hotovou
>funkci QuotedStr.
>
>
>
>Ja na vetsinu Insert/Update/Delete operaci nad tabulkou pouzivam
>STORE PROCEDURES a komponenty TIBStoredProc s
>parametry. S tim jsou nejmensi problemy.
>
>Jarek U.
>
>
>
>
>
>
>
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Martin Burle
26. 10. 2003 21:03
> truncation, Cannot transliterate character between character sets.
..tak nad tim jsem tuhle taky badal - nejspis jsi podobne jako ja zapomel
nastavit db na WIN 1250 (dvojklik na komponente IBdatabase).
HTH,
MB
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Petr Matejcek
26. 10. 2003 22:37
tak jsem vsechny sloupce nastavil jako VARCHAR(20 ) CHARACTER SET WIN1250
DB jsem take nastavil na WIN 1250 a vkladani retezcu s diakritikou uz
funguje
jenze kdyz pak dam SELECT * FROM TABLE ORDER BY JMENO tak to stejne
neseradi podle ceske abecedy ale jmena zacinajici na `, C(, R(, }, jsou
na konci az za Z
Vite nekdo pls jak na to ?
>>truncation, Cannot transliterate character between character sets.
>>
>>
>
>..tak nad tim jsem tuhle taky badal - nejspis jsi podobne jako ja zapomel
>nastavit db na WIN 1250 (dvojklik na komponente IBdatabase).
>
>HTH,
>
>MB
>
>
>
>
>
>
>
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: js-delphi@quick.cz
27. 10. 2003 6:25
Od: Petr Matejcek <konference@crhov.komfi.cz>
> tak jsem vsechny sloupce nastavil jako
> VARCHAR(20 ) CHARACTER SET WIN1250
> DB jsem take nastavil na WIN 1250 a vkladani
> retezcu s diakritikou uz
> funguje
> jenze kdyz pak dam SELECT * FROM TABLE ORDER
> BY JMENO tak to stejne
> neseradi podle ceske abecedy ale jmena
> zacinajici na `, C(, R(, }, jsou
> na konci az za Z
Ahoj!
No ja osobne delam jeste to, ze typu sloupce nastavim COLLATE PXW_CSY, coz
zpusobi spravne serazeni podel cestiny. Ted nevim, jestli s timhle nebyl nejaky
problem pri alter sloupce - tusim ze to na alter nereagovalo a tak jsem musel
vytvorit jiny sloupec s pozadovanym typem, presypat do nej hodnoty, smazat
puvodni sloupec a pak ten novy prejmenovat na ten puvodni.
Pokud nemas v tabulce zadny data, je lepsi tabulku dropnout a vytvorit spravne
znovu (kdyz si pres Consoli vytahnes Metadata k tabulce, mas to hotovy jedna-
dve) s pozadovanyma typama
Spravne by v tabulce melo byt:
TITUL VARCHAR(9) CHARACTER SET WIN1250 COLLATE PXW_CSY
Ahoj
Jirka
--------------------------------------------------
Ing. Jiri Sokol; jiri.sokol@seznam.cz; 972 231 187
D6Prof+SP2; WinXPProf+SP1
programator amater
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)
Odpovedá: Lebeda David
27. 10. 2003 6:23
> tak jsem vsechny sloupce nastavil jako VARCHAR(20 ) CHARACTER SET
> WIN1250 DB jsem take nastavil na WIN 1250 a vkladani retezcu s
> diakritikou uz funguje jenze kdyz pak dam SELECT * FROM TABLE ORDER BY
> JMENO tak to stejne neseradi podle ceske abecedy ale jmena zacinajici
> na `, C(, R(, }, jsou na konci az za Z
>
Ahoj,
pokusim se to vsechno shrnout. Jde o nekolik ruznych veci:
1) Charset - je vhodne nastavit na WIN1250 - ale pozor - dela se to jak v
databazi,
tak i v pripojeni. To uz tu bylo psano. Obecne lze mit v databazi jiny charset
nez v
pripojeni a Firebird pak sam provadi konverzi znaku - jedine, kdy to nefunguje,
je,
kdyz v nekterem z obou pripadu char neni uveden vubec, coz byl asi puvodne tvuj
pripad.
2) Setrideni se neovlada charsetem. Je urceno pomoci COLLATION. Jiz v definici
sloupcu typu CHAR, VARCHAR se da uvest - jako se uvadi CHARACTER SET
(ktery je ale nejjednodussi nastavit na urovni cele databazi a pak uz se o nej
nestarat), muzes v definici uvest i COLLATE PXW_CSY, coz urcuje zpusob trideni.
Pokud trideni nemas uvedene jiz v definici sloupce, muzes je specifikovat primo
v
order by casti dotazu, jak uz tu nekdo psal. Vice viz dokumentace.
David Lebeda
----------
* www.inMail.sk - Vasa emailova adresa na cely zivot ZDARMA
* Mail neobsahuje virusy. Zkontrolovane antivirusom NOD32 (www.eset.sk)
* www.SlovakNET.sk - profesionalny webhosting, domena .SK ZADARMO
* Zoner Media Explorer 5 - stiahnite si pomocnika pre digitalnu fotografiu
(zme.zoner.sk)